/*
 * This file is part of the eccOS Library.
 * Copyright (C) 2007.
 *
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either the GNU General Public License Version 2 or later (the "GPL"), or
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 */
package org.openeccos.peers;

import nextapp.echo2.app.Color;
import nextapp.echo2.app.Style;
import nextapp.echo2.webcontainer.ContainerInstance;

import org.openeccos.table.PDTable;
import org.openeccos.util.ITableColorFactory;
import org.openeccos.util.PDUtil;
import org.w3c.dom.Attr;
import org.w3c.dom.Element;

import echopointng.TableEx;
import echopointng.ui.syncpeer.TableExPeer;
import echopointng.ui.util.RenderingContext;

/**
 *
 * @author cgspinner@web.de
 */
public class PDTablePeer extends TableExPeer {

  @Override
  protected void renderRow(RenderingContext rc, Element tbodyElement, TableEx table, int rowIndex,
      String defaultInsetsAttributeValue, Element itemXML, Style fallbackStyle) {
    super.renderRow(rc, tbodyElement, table, rowIndex, defaultInsetsAttributeValue, itemXML, fallbackStyle);

    PDTable pdTable = (PDTable) rc.getComponent();
    String elementId = ContainerInstance.getElementId(table);

    // Get row with elementId + "_tr_" + rowIndex as Id
    Element curr = tbodyElement;

    for (int i = 0; i < curr.getChildNodes().getLength(); i++) {
      Element node = (Element) curr.getChildNodes().item(i);
      Attr attr = node.getAttributeNode("id");

      if (attr != null && attr.getValue().equals(elementId + "_tr_" + rowIndex)) {
        // Set color
        ITableColorFactory tableColorFactory = pdTable.getTableColorFactory();
        Color color = tableColorFactory.getColor(pdTable, rowIndex);
        int[] rgbArray = {color.getRed(), color.getGreen(), color.getBlue()};
        node.setAttribute("style", "background:" + PDUtil.intRGBArrayToHtmlColor(rgbArray));
        break;
      }
    }
  }
}
